import { Controller,Get, Query, ParseIntPipe, Param, Post, Body, Render,Response,Request, Put, Delete } from '@nestjs/common';
import {UserService} from './user.service'
// 导入log服务
import {LogService} from '../log/log.service'
import { json } from 'express';

@Controller('user')
export class UserController {
    constructor(
        private readonly logService:LogService,
        private readonly userService:UserService,
        
    ){
    }

 
    // @Get()
  
    // hello():string{
    //     this.logService.log('hello控制器')
    //     return 'hello word222'
    // }
    // async userList():Promise<any[]> {
    //     this.logService.log('这里调用了log服务的接口hello')
    //     return await this.userService.userList()
    // }
    // 接口调用
   
    // 访问方式 http://localhost:3000/user?age=10 获取到的query是一个对象 {age:10}  所有获取的值都是一个对象且值是string
    //  @Get()
    // userList(@Query() query:any):string{
    //     console.log(query);
    //     return '用户列表'
        
    // }
    // http://localhost:3000/user?name=zhangsan&age=20  将age转化为数字 且输入name age的值  单独获取name和age的值
    // @Get()
    // userList(
    //     @Query('age',new ParseIntPipe()) age:number,
    //     @Query('name') name:string
    // ){        
    //     console.log(name,age);
    //     return '用户列表'
        
    // }

    // resful风格的语法使用@param参数的方式获取
    // 访问链接 http://localhost:3000/user/30  由于接口是基于/user的 所有右面的参数30就表示id=30 输出的值都是字符串
    // @Get(":id")
    // userInfo(@Param() params:any){
    //     console.log(params);
    //     return '用户详情'
    // }
    // 将id格式化为数字类型  http://localhost:3000/user/50
    // @Get(":id")
    // userInfo(@Param('id' ,new ParseIntPipe()) id:number){
    //     console.log(id);
    //     return '用户详情'
    // }

    // 使用Post的方式接受用户传递的参数
    // 使用postman进行测试  接口 http://localhost:3000/user  选择body x-www.form-urlencoded 然抽传递参数 name li age 30
    // @Post()
    // addUser(@Body()body:any){
    //     console.log(body);
    //     return body
    // }
    // 访问 http://localhost:8080/user 默认返回主页2个汉子
    // @Get()
    // index(){
    //     return '主页'
    // }
    // // 访问http://localhost:8080/user/login 相当于访问用户登录页面的时候 需要使用模板引擎去渲染静态页面 login.ejs页面
    // @Get('login')
    // @Render('login')
    // // 返回给login.ejs的数据
    // loginPage(){
    //     return {title:'登录页面'}
    // }
    // //  用户使用 http://localhost:8080/user/login 提交post 请求 获取用户提交的body参数 然后将用户从定向到主页
    // @Post('login')
    // login(@Body() body,  @Response()res){
    //     console.log(body);
    //     res.redirect('/user')
        
    // }

    // 使用cookie
    // @Get()
    // index(@Request() req){
    //     console.log(req.cookies,'当前的cookie');
    //     return '主页'
    // }
    // @Get('login')
    // login(@Response() res){
    //     // 当用户访问/user/login的时候设置cookie
    //     res.cookie('name','zhangsan',{maxAge:1000*5,httpOnly:true})
    //     res.send('登录页面')
    // }
    // 使用session
    // @Get()
    // index(@Request() req:{[key:string]:any}):string{
    //     console.log(req.session.name);
    //     return '用户主页1111'
    // }
    // @Get('login')
    // login(
    //     @Response() res:{[key:string]:any},
    //     @Request() req:{[key:string]:any}
    // ):void{
    //    req.session.name='hello'
    //    res.send('登录页面222'+req.session.name)

    // }
    // @Get()
    // index(){
    //     return '用户模块 user Modules'
    // }
  

    // 获取所有用户信息  
    @Get()
    @Render('user')
   async index():Promise<any> {
      // this.logService.log('这里调用了log服务的接口hello')
         let arr=await this.userService.index()
         return {arr}
    }
    // 新增用户接口
    @Post()
    async addUser(@Body() body:any,@Response() res){
        // console.log(body);
        // return body
       let rest= await this.userService.addUser(body)
       console.log(rest);
       res.send(rest)
        // return res
    }
    //  获取用户信息
    @Get(':id')
    async getSingleUserInfo(@Param('id',new ParseIntPipe()) id:number ,@Response() res){
        // console.log(id);
        let rest=await this.userService.getSingleUserInfo(id)
        res.send(`用户的信息是`+JSON.stringify(rest))
    }
    @Put()
    async editUserInfo( @Body() body: any ,@Response() res){
        // console.log(body);
        let userinfo=await this.userService.editUserInfo(body)
        res.send(`确定要修改该用户信息?该用户的原信息为${JSON.stringify(userinfo)},修改后的信息为${JSON.stringify(body)}`)
    }
    @Delete(':id')
   async delUser(@Param('id' , new ParseIntPipe()) id:number){
        let userinfo=await this.userService.deleteUser(id)
        console.log(userinfo);
        return `确定要删除用户?${userinfo.name}用户ID是${userinfo.id}`
        
    }
    // 登录功能
    @Post('login')
    login(@Body() body:any,@Response() res ){
        // console.log(body);
        if(body.username==='admin' && body.password==='123456'){
           console.log('登录成功');
           res.send(`当前用户是${body.username}`)
            // res.redirect('/user')
        }else {
        //    console.log('请确认用户名密码是否错误');
           res.send('请确认用户名密码是否错误')
        }
        
        

    }

    

}
